// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.


using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Text;
using Silk.NET.Core;
using Silk.NET.Core.Native;
using Silk.NET.Core.Attributes;
using Silk.NET.Core.Contexts;
using Silk.NET.Core.Loader;

#pragma warning disable 1591

namespace Silk.NET.OpenXR
{
    [NativeName("Name", "XrFoveationApplyInfoHTC")]
    public unsafe partial struct FoveationApplyInfoHTC
    {
        public FoveationApplyInfoHTC
        (
            StructureType? type = StructureType.TypeFoveationApplyInfoHtc,
            void* next = null,
            FoveationModeHTC? mode = null,
            uint? subImageCount = null,
            SwapchainSubImage* subImages = null
        ) : this()
        {
            if (type is not null)
            {
                Type = type.Value;
            }

            if (next is not null)
            {
                Next = next;
            }

            if (mode is not null)
            {
                Mode = mode.Value;
            }

            if (subImageCount is not null)
            {
                SubImageCount = subImageCount.Value;
            }

            if (subImages is not null)
            {
                SubImages = subImages;
            }
        }

/// <summary></summary>
        [NativeName("Type", "XrStructureType")]
        [NativeName("Type.Name", "XrStructureType")]
        [NativeName("Name", "type")]
        public StructureType Type;
/// <summary></summary>
        [NativeName("Type", "void*")]
        [NativeName("Type.Name", "void")]
        [NativeName("Name", "next")]
        public void* Next;
/// <summary></summary>
        [NativeName("Type", "XrFoveationModeHTC")]
        [NativeName("Type.Name", "XrFoveationModeHTC")]
        [NativeName("Name", "mode")]
        public FoveationModeHTC Mode;
/// <summary></summary>
        [NativeName("Type", "uint32_t")]
        [NativeName("Type.Name", "uint32_t")]
        [NativeName("Name", "subImageCount")]
        public uint SubImageCount;
/// <summary></summary>
        [NativeName("Type", "XrSwapchainSubImage*")]
        [NativeName("Type.Name", "XrSwapchainSubImage")]
        [NativeName("Name", "subImages")]
        public SwapchainSubImage* SubImages;
    }
}
